dream6_msgtab = 
  choose_ {
     ["dream6_tablet._message==-2"] = inc_("dream6_tablet._message")
    ,["dream6_tablet._message==-1"] =
        chain_ {
          inc_("dream6_tablet._message"),
          music_("day",3)
        }
    ,["dream6_tablet._message==0"] =
      chain_ {
        inc_("dream6_tablet._message"),
        [[Планшет в моих руках чуть заметно вибрирует -- в первую секунду мне кажется,
          что это сработало какое-то забытое напоминание из календаря. Но нет, я получил
          мгновенное сообщение.]]
      }
   ,["dream6_tablet._message==3"] =
      chain_ {
        inc_("dream6_tablet._message"),
        [[Планшет снова завибрировал -- видимо, пришёл ответ от Лиды.]]
      }
   ,["dream6_tablet._message==6"] =
      chain_ {
        inc_("dream6_tablet._message"),
        [[Планшет начинает едва заметно ерзать на столе -- я получил сообщение.]]
      }
   ,["dream6_tablet._message==9"] =
      chain_ {
        inc_("dream6_tablet._message"),
        [[Планшет вздрагивает в моих руках, мне пришло сообщение.]]
      }
  }

function tabletmessage_(act)
  return function(s)
    local orig = rcall(act,s);
    local res = dream6_msgtab(s);
    if res ~= nil then
      return orig.."^^<i>"..res.."</i>";
    else
      return orig;
    end
  end
end

dream6start = gfxroom {
   bg           = "bg"
  ,ontimer      = function(s)
                    if s._frames == 1 then
                      play_music("powerdown2");
                    end
                    s:cleancache();
                    local gfx = s:loadgfx(s.pics[s._frames]);
                    sprite.copy(gfx, s.pic, 0, 0);
                  end
  ,pics         = {
                     "light/1"
                    ,"light/2"
                    ,"light/3"
                    ,"light/4"
                    ,"light/5"
                    ,"light/6"
                    ,"light/7"
                    ,"light/8"
                    ,"light/9"
                    ,"light/10"
                    ,"light/11"
                    ,"light/12"
                    ,"light/13"
                    ,"light/14"
                    ,"light/15"
                    ,"light/16"
                    ,"light/17"
                    ,"light/18"
                    ,"light/19"
                    ,"light/20"
                    ,"light/21"
                    ,"light/22"
                    ,"light/23"
                    ,"light/24"
                  }
  ,stop         = 25
  ,next         = walk_("dream6start2")
  ,rate         = 50
}

dream6start2 = pause {
   time         = 3000
  ,next         = walk_("dream6")
}

dream6 = scene {
   _wait        = 0
  ,checkpoint   = true
  ,kind_        = "classroom"
  ,obj          = {
                     "dream6_start"
                    ,"dream6_surround"
                    ,"dream6_professor"
                    ,"dream6_lydia"
                    ,"dream6_messages"
                    ,"dream6_news"
                    ,"dream6_desk"
                    ,"cmn_pocket"
                  }
  ,Refresh      = redirect_("Exam", "dream6_surround")
  ,Stand        = tabletmessage_(choose_ {
                     ["default"] = [[Не думаю, что мне стоит вставать посреди лекции.]]
                    ,["dream6_tablet._message==11"] =
                        [[Вставать с места не обязательно. Мы всё-таки не в школе. Но Соколовский ждёт моего ответа.]]
                  })
  ,Exit         = redirect_("Stand")
  ,Wait         = tabletmessage_(choose_ {
                     ["default"] =
                        chain_ {
                          inc_("s._wait"),
                          [[Соколовский стоит посреди аудитории и почти слово в слово повторяет свою недавнюю статью
                            о технологиях девятых, которую я с немалым трудом заставил себя прочитать. Интересно, он
                            действительно заучивал наизусть собственную писанину, или же у него такая хорошая память?]]
                        }
                    ,["dream6_tablet._message~=11 and s._wait==1"] =
                        chain_ {
                          inc_("s._wait"),
                          [[-- Кстати говоря...^
                            Соколовский подходит к проектору, на секунду мне кажется, что сейчас он включит
                            учебный фильм, видеохронику полёта "Одиссея-12", трёхмерную панораму планеты девятых --
                            хоть что-нибудь, что угодно, лишь бы он на несколько минут заткнулся, и мы посидели бы
                            в тишине. Однако Соколовский просто кладёт на проектор руку и насмешливо смотрит на
                            студентов.^
                            -- Кстати говоря... -- продолжает он.]]
                        }
                    ,["dream6_tablet._message~=11 and s._wait==2"] =
                        chain_ {
                          inc_("s._wait"),
                          [[В принципе эта лекция мало чем отличается от других выступлений Соколовского -- такая же
                            скучная, затянутая и бесполезная, -- однако сама мысль о том, что мне придётся досидеть
                            до самого конца мучительна.]]
                        }
                    ,["dream6_tablet._message~=11 and s._wait==3"] =
                        chain_ {
                          inc_("s._wait"),
                          [[Соколовский ненадолго прерывается и подходит к столику в конце зала, чтобы налить из графина
                            воды. Или разбавленной водки. Я наслаждаюсь несколькими секундами тишины.^
                            -- Ну что ж... -- говорит Соколовский, оборачиваясь.]]
                        }
                    ,["dream6_tablet._message~=11 and s._wait==4"] =
                        chain_ {
                          inc_("s._wait"),
                          [[-- И не забудьте, -- приказным тоном говорит Соколовский, -- это я обязательно буду спрашивать
                            на экзамене. Так что если "трояк" не является пределом ваших мечтаний...^
                            Соколовский делает театральную паузу, в аудитории слышится чей-то рассерженный шёпот.]]
                        }
                    ,["dream6_tablet._message~=11 and s._wait==5"] =
                        chain_ {
                          inc_("s._wait"),
                          [[Да, нужно просто дождаться завершения невыносимой лекции -- и всё. На сегодня это
                            последнее занятие, а потом мы с Лидом будем свободны всю оставшуюся часть дня.]]
                        }
                    ,["dream6_tablet._message~=11 and s._wait==6"] =
                        [[Я при всём желании никак не могу сосредоточиться на лекции, я думаю только о Лиде, о
                          том, когда закончится это последнее на сегодня занятие, и вся оставшаяся часть дня
                          будет принадлежать только нам. Наверняка я потом смогу прочитать обо всём, что сейчас
                          рассказывает Соколовский, в одной из его статей.]]
                    ,["dream6_tablet._message==11"] = [[Нужно ответить Соколовскому.]]
                  })
  ,before_Default=function(s,v)
                    if dream6_tablet._message==11 and
                      v~="Talk" and v~="Check" and v~="Read" and v~="Write" and v~="Reply" and v~="Wait"
                      and v~="Listen" and v~="Search" and v~="Stand" then
                      return "Сейчас не до этого. Соколовский ждёт моего ответа!";
                    end
                  end
}

dream6_start = rooms.event
  [[Лекция Соколовского только началась, а мне уже скучно. Я даже завидую Виктору, который приболел
    и не пришёл сегодня на занятия. Однако на сей раз мне точно придётся досидеть до конца. Память у
    Соколовского, несмотря на преклонные года, оказалась просто неправдоподобно хорошей, а получать
    ещё один трояк в свой табель мне совершенно не хочется. Пусть даже это и непрофильный для меня
    предмет.^
    Однако заставить себя слушать выступления профессора у меня никак не получается. Сначала я просто
    читаю новости на сайте кампуса в своём планшете, а потом начинаю разглядывать Лиду, которая сидит
    на несколько рядов ниже меня -- почти перед самым подиумом, по которому расхаживает Соколовский.
    Мы хотели сесть вместе, но она опоздала на лекцию, а все места в моём ряду уже были заняты.]]

dream6_professor = item {
   nam          = _"Соколовский"
  ,Exam         = tabletmessage_
                  [[Соколовский сегодня в своём любимом амплуа сумасшедшего профессора -- спутанные
                    седые волосы, надменный взгляд. И как он не устаёт в течение всей лекции расхаживать
                    по своему импровизированному подиуму? Остальные преподаватели обычно просто садятся за
                    стол и показывают какие-нибудь слайды, но Соколовский сегодня решил обойтись без
                    голограмм, и из-за этого слушать его даже тоскливее, чем обычно.]]
  ,Listen       = tabletmessage_(redirect_("Wait", "dream6"))
  ,Talk         = tabletmessage_(choose_ {
                     ["default"] =
                        [[Лучше мне просто тихо досидеть до конца лекции. К тому же я понятия не имею, о чём мог
                          бы спросить Соколовского.]]
                    ,["dream6_tablet._message==11"] =
                        chain_ {
                          drop_("dream6_tablet"),
                          walk_("cell7")
                        }
                  })
  ,Attack       = tabletmessage_ [[Это явно не улучшит оценки в моём табеле.]]
  ,Approach     = redirect_("Stand", "dream6")
  ,Think        = redirect_("Think", "sokolovsky")
}:like(pHuman)

dream6_lydia = item {
   nam          = _"Лида"
  ,Exam         = tabletmessage_
                  [[Лида сидит через четыре ряда от меня, я едва могу разглядеть её за головами других студентов.
                    Она периодически смотрит в свой планшет, поправляя волосы на висках, и совсем не обращает
                    внимания на Соколовского, который распинается перед аудиторией, периодически угрожая
                    очередным безжалостным экзаменом.]]
  ,Talk         = tabletmessage_
                  [[Разговаривать с кем-то, кто сидит в другом ряду во время лекции Соколовского -- не
                    самая удачная идея. Лучше написать ей мгновенное сообщение.]]
  ,Listen       = tabletmessage_ [[Лида ни с кем не разговаривает.]]
  ,Approach     = redirect_("Stand", "dream6")
  ,Attack       = tabletmessage_ [[Что-то мне сегодня нехорошо.]]
  ,Think        = tabletmessage_
                  [[Я не могу дождаться конца лекции, а Лида даже ни разу не обернулась. Может, она просто не знает,
                    что я сижу позади неё.]]
  ,Reply        = redirect_("Write", "dream6_messages")
}:like(pHuman)

dream6_surround = item {
   nam          = _"аудитория"
  ,Exam         = tabletmessage_
                  [[В аудитории сегодня почти нет свободных мест -- кажется, весь курс собрался послушать 
                    Соколовского, как на последней лекции перед каким-нибудь бессердечным экзаменом.
                    Да, видно, Соколовский так запугал всех своими "неудами", что теперь его занятия будут
                    бить все институтские рекорды по посещаемости.]]
  ,Listen       = tabletmessage_
                  [[В аудитории тихо. Можно подумать, что все и правда слушают Соколовского.]]
  ,Walk         = tabletmessage_
                  [[Я не собираюсь расхаживать по аудитории во время лекции.]]
}:like(pRoom)

dream6_desk = item {
   nam          = _"стол"
  ,Exam         = [[Парта как парта, рассматривать здесь совершенно нечего.]]
  ,Wreck        = [[Не представляю, чем мне не угодила эта парта.]]
  ,Move         = [[Встать посреди лекции и попытаться передвинуть парту? Нет, лучше уж я займусь чем-нибудь
                    менее оригинальным.]]
  ,Open         = choose_ {
                     ["default"] =
                        [[В парте нет никаких ящиков и отделений, так что открыть тут ничего не получится.]]
                    ,["dream6_tablet._message==11"] = [[Сейчас не до этого.]]
                  }
  ,Close        = [[Закрывать здесь нечего. Отделений в столе нет.]]
  ,Sit          = [[Я и так сижу за столом.]]
  ,Approach     = [[Я сижу за столом.]]
  ,Stand        = redirect_("Stand", "dream6")
  ,Lie          = [[Я бы предпочёл не забираться с ногами на стол.]]
}:like(pTable)

dream6_messages = item {
   nam          = name_ {
                     ["default"] = _"сообщение в планшете"
                    ,["Read"] = _"сообщения в планшете"
                    ,["Check"] = _"сообщения в планшете"
                    ,["Look"] = _"сообщения в планшете"
                  }
  ,Look         = redirect_("Read")
  ,Read         = choose_ {
                     ["default"] = "Новых сообщений нет."
                    ,["dream6_tablet._message==1"] =
                        chain_ {
                          inc_("dream6_tablet._message"),
                          [[Это сообщение от Лиды.^
                            <i>Поедем сегодня?</i>^
                            Мне хочется спросить -- куда, но я начинаю сомневаться. Неужели мы договаривались
                            о чём-то, а я умудрился это забыть?^
                            Соколовский как будто замечает, что я совсем не слушаю его лекцию. Он встаёт прямо
                            напротив меня и начинает говорить неожиданно громко, раздражённо размахивая правой
                            рукой:^
                            -- Повторюсь, изучение слухов и домыслов никогда не было и не будет частью нашей
                            программы, и я бы очень не хотел, чтобы повторилась та же ситуация, что и на последнем
                            экзамене. Если вы хотите продемонстрировать свою эрудированность, то почитайте лучше
                            работы из нашей официальной программы.^
                            Кто-то на первом ряду поднимает руку, и Соколовский лениво кивает головой, разрешая
                            высказаться.^
                            -- Извините, -- звучит робкий голос, -- но есть ведь официальные документы...^
                            -- Нет! -- громко говорит Соколовский. -- Это я вам и пытаюсь объяснить! Официально
                            признанных материалов нет! Нет подтверждений! -- Соколовский особенно чётко
                            выговаривает последнее слово. -- Например, душещипательная история об экипаже, который
                            почти двадцать лет назад был захвачен девятыми, но второй пилот умудрился
                            неведомым образом спастись и потом рассказывал абсолютно неправдоподобные истории о
                            страшных экспериментах, которые якобы над ним ставили... Всё это основано на показаниях
                            одного человека, которого нашли в спасательной капсуле на орбите AR-56 и у которого
                            было обнаружено психическое расстройство.^
                            Соколовский уже не смотрит в мою сторону, и я вновь открываю приложение для мгновенных
                            сообщений. Надо что-то ответить Лиде.]]
                        }
                    ,["dream6_tablet._message==2"] =
                        [[Я ещё раз перечитал сообщение Лиды. Куда всё-таки она хочет поехать? Надо бы ей ответить
                          что-нибудь. Но аккуратно.]]
                    ,["dream6_tablet._message==4"] =
                        chain_ {
                          inc_("dream6_tablet._message"),
                          [[Да, это сообщение от Лиды. Я чуть приподнимаюсь, пытаясь
                            разглядеть её внизу и замечаю, как она поправляет на затылке волосы, затем кладёт
                            свой планшет экраном вниз на парту и начинает следить за Соколовским, который
                            деловито расхаживает перед выключенным проектором голограмм.^
                            Я открываю сообщение и читаю:^
                            <i>Машину напрокат?</i>^
                            Машину? Неужели мы и правда обсуждали какую-то поездку, а я об этом забыл? Я
                            замираю в растерянности, не зная, что ответить.^
                            -- Другие случаи, -- говорит Соколовский, продолжая смотреть на того несчастного
                            студента, который задал ему вопрос, -- ещё более сомнительны, чем этот. Нет никаких
                            подтверждённых данных, что девятые когда-то захватывали экипажи наших кораблей и уж,
                            тем более, проводили над ними какие-то бесчеловечные эксперименты.^
                            -- Но, профессор, а вы не читали... -- не успокаивается студент.^
                            Я проникаюсь уважением к его упрямству, не каждый решится спорить с Соколовским.
                            Интересно, кто это? Голос незнакомый. Забавно, но я до сих пор не знаю и половины
                            курса.]]
                        }
                    ,["dream6_tablet._message==5"] = [[Надо что-нибудь ответить Лиде.]]
                    ,["dream6_tablet._message==7"] =
                        chain_ {
                          inc_("dream6_tablet._message"),
                          [[От Лиды приходит ответ:^
                            <i>К какой ещё реке? Мы ведь собирались в космопорт поехать, сегодня запуск "Аякса".</i>^
                            Точно! Я даже невольно мотаю головой. И как я умудрился забыть об этом, когда сам
                            же уговаривал Лиду составить мне компанию? "Аякс-27", самый большой в истории
                            научно-исследовательский корабль с экипажем в 214 человек, стартует сегодня из
                            центрального космодрома в десять часов вечера, а я опять забыл забронировать машину.
                            Придётся снова брать то, что у них есть -- если, конечно, у них вообще есть хоть
                            что-нибудь.]]
                        }
                    ,["dream6_tablet._message==8"] = [[Надо что-то ответить Лиде.]]
                    ,["dream6_tablet._message==10"] =
                        chain_ {
                          inc_("dream6_tablet._message"),
                          [[Ответ от Лиды приходит почти мгновенно:^
                            <i>Закажи сейчас.</i>^
                            И действительно... До конца лекции ещё почти час, а после финального на сегодня
                            звонка у прокатного бюро наверняка выстроится очередь -- думаю, мы не единственные,
                            кому пришла в голову идея поехать посмотреть на "Аякс".^
                            Я открываю сайт кампуса и выбираю раздел с многозначительным названием "Сервисы".^
                            -- Скажите, -- раздаётся внезапно громкий голос Соколовского, и я каким-то образом
                            понимаю, что он обращается ко мне. -- К сожалению, я не помню ваше имя. Как вас...]]
                        }
                    ,["dream6_tablet._message==11"] =
                        [[Сейчас не до этого! Соколовский хочет спросить меня о чём-то.]]
                  }
  ,Write        = choose_ {
                     ["default"] = [[Мне не нужно писать никаких сообщений.]]
                    ,["dream6_tablet._message==2"] =
                        chain_ {
                          inc_("dream6_tablet._message"),
                          [[-- Повторюсь, -- продолжает распинаться Соколовский, -- последний официальный контакт
                            с девятыми произошёл больше шестидесяти лет назад. Официально мы находимся с ними в
                            состоянии мира...^
                            Я немного сгибаю экран планшета, как если бы боялся, что кто-нибудь из соседей по ряду
                            сможет прочитать мою переписку, и быстро набираю:^
                            <i>Конечно, поедем. Я даже знаю, куда.</i>^
                            Я нажимаю на кнопку "Отправить" и перевожу взгляд на Соколовского, продолжающего
                            рассуждать о "легендах", которые сам же пару минут назад просил нас полностью
                            игнорировать.]]
                        }
                    ,["dream6_tablet._message==5"] =
                        chain_ {
                          inc_("dream6_tablet._message"),
                          [[Я печатаю Лиде ответ, однако мне упорно кажется, что Соколовский может в любой момент
                            выкрикнуть моё имя и заставить отчитаться перед всей аудиторией, чем я занимаюсь.^
                            <i>Машину? Мы поедем к реке?</i>^
                            "Надеюсь, она не обидится, если я и правда о чём-то забыл", думаю я и нажимаю на
                            кнопку "Отправить".]]
                        }
                    ,["dream6_tablet._message==8"] =
                        chain_ {
                          inc_("dream6_tablet._message"),
                          [[Я пишу Лиде ответ:^
                            <i>Извини, передоз с учёбой последнее время. Конечно, поедем. Хотя я опять забыл
                            забронировать автомобиль.</i>^
                            Я нажимаю на кнопку "Отправить".^
                            -- Следующий важный пункт в нашей программе... -- говорит Соколовский.]]
                        }
                    ,["dream6_tablet._message==11"] = [[Не время сейчас писать Лиде сообщения.]]
                  }
  ,Reply        = redirect_("Write")
  ,Check        = redirect_("Read")
  ,articles     = {
                    ["Reply"] = "на"
                  }
}

dream6_tablet = item {
   _message     = -2
  ,_search      = 0
  ,nam          = _"планшет"
  ,Move         = tabletmessage_
                  [[Я поднимаю планшет со стола и покачиваю им перед собой, как веером. Тонкий корпус планшета сгибается,
                    как лист бумаги.]]
  ,Wreck        = tabletmessage_
                  [[Ну уж нет, портить свой планшет я не собираюсь.]]
  ,Call         = tabletmessage_(choose_ {
                     ["default"] =
                        [[Звонить во время лекции не лучшая идея -- у Соколовского, несмотря на возраст, отменный слух.
                          Лучше отправить текстовое сообщение.]]
                    ,["dream6_tablet._message==11"] =
                        [[Соколовский ко мне обращается, а я в ответ начну звонить кому-нибудь по планшету? Ну уж нет,
                          мне ещё дорога жизнь.]]
                  })
  ,Throw        = use_ {
                     ["default"] = [[Что-то мне не хочется бросать свой планшет.]]
                    ,["dream6_lydia"] = redirect_("Attack", "dream6_lydia")
                    ,["dream6_professor"] = redirect_("Attack", "dream6_professor")
                    ,["cmn_pocket"] = redirect_("Close")
                    ,["dream6_desk"] = redirect_("TakeFrom")
                  }
  ,Search       = tabletmessage_(choose_ {
                     ["default"] =
                        choose_ {
                          ["default"] =
                              chain_ {
                                inc_("s._search"),
                                [[Я открываю портал института и принимаюсь читать последние новости. Со старшего курса за
                                  последний семестр было отсеяно тридцать два процента студентов, с нашего -- двенадцать.^
                                  Да, такая статистика не слишком обнадёживает.]]
                              }
                          ,["s._search==1"] =
                              chain_ {
                                inc_("s._search"),
                                [[На следующей неделе некто профессор Островский будет читать лекцию о современной робототехнике.
                                  Это не тот ли профессор, о котором говорил Виктор? Может, сходить?]]
                              }
                          ,["s._search==2"] =
                              chain_ {
                                inc_("s._search"),
                                [[В директорате рассматривается вопрос о сокращении времени всех перерывов между парами на пять минут.
                                  Интересно, кому вообще приходят в голову такие идеи? Иногда у меня возникает такое чувство, что
                                  я в армии. Впрочем, это не так уж и далеко от истины, учитывая, что половина нашего курса наверняка
                                  потом пойдёт в военку.]]
                              }
                          ,["s._search==3"] =
                              chain_ {
                                inc_("s._search"),
                                unlock_("internet"),
                                [[Вступительный балл на моё отделение в этом году вырос до четырёх и девяносто семи. Интересно,
                                  я и не знал. Получается, что я со своим средним баллом теперь бы уже и не смог поступить.]]
                              }
                          ,["s._search>4"] = [[На институтском портале больше нет ничего интересного.]]
                        }
                    ,["dream6_tablet._message==11"] = [[Сейчас не до этого!]]
                  })
}:like(pTablet)

dream6_news = item {
   nam          = _"новости в планшете"
  ,Read         = redirect_("Search", "dream6_tablet")
  ,Look         = redirect_("Search", "dream6_tablet")
}
